﻿using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using App_Code.consultasSql.ConsultasSeguridad;
using ConsultasDeDeguridad;

public partial class Seguridad_ABMUsuarios : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblMensaje.Text = "";
        divMensajes.Visible = false;
        CargarUsuarios();
        if(!IsPostBack)
        {
            CCPerfilesDeUsuario perfiles = new CCPerfilesDeUsuario();
            ddlRoles.DataTextField = "Nombre";
            ddlRoles.DataValueField = "IdRol";
            ddlRoles.DataSource = perfiles.SelectRoles();
            ddlRoles.DataBind();
        }
    }

    private void CargarUsuarios()
    {
        Usuarios usuarios = new Usuarios();
        tblUsuarios.DataSource = usuarios.SelectUsuarios();
        tblUsuarios.DataBind();
    }

    protected void btnModificar_Command(object sender, CommandEventArgs e)
    {
        Usuarios usuarios = new Usuarios();
        DataTable dtUsuario = usuarios.SelectUsuario(Convert.ToInt32(e.CommandArgument));
        if(dtUsuario != null && dtUsuario.Rows.Count > 0)
        {
            hdnIdUsuario.Value = dtUsuario.Rows[0]["IdUsuario"].ToString();
            txtNombreUsuario.Text = dtUsuario.Rows[0]["Nombre"].ToString();
            ddlRoles.SelectedValue = dtUsuario.Rows[0]["IdRol"].ToString();
            chkActivo.Checked = Convert.ToBoolean(dtUsuario.Rows[0]["Activo"]);

            pnlDatosUsuario.Visible = true;
            pnlBusqueda.Visible = false;
        }
    }

    protected void btnNuevoUsuario_OnClick(object sender, EventArgs e)
    {
        hdnIdUsuario.Value = "";
        txtNombreUsuario.Text = string.Empty;
        ddlRoles.SelectedIndex = 0;
        chkActivo.Checked = true;
        txtContraseña.Text = "";

        pnlDatosUsuario.Visible = true;
        pnlBusqueda.Visible = false;
    }

    protected void btnSalir_OnClick(object sender, EventArgs e)
    {
        
    }

    protected void btnGuardar_OnClick(object sender, EventArgs e)
    {
        if(ValidarUsuario())
        {
            Usuarios usuarios = new Usuarios();
            if (hdnIdUsuario.Value != String.Empty)
            {
                usuarios.ModificarUsuario(Convert.ToInt32(hdnIdUsuario.Value), Convert.ToInt32(ddlRoles.SelectedValue), txtNombreUsuario.Text.Trim(), chkActivo.Checked, txtContraseña.Text);
                divMensajes.Visible = true;
                lblMensaje.Text = "El usuario ha sido modificado.";
            }
            else
            {
                usuarios.NuevoUsuario(Convert.ToInt32(ddlRoles.SelectedValue), txtNombreUsuario.Text.Trim(), chkActivo.Checked, txtContraseña.Text);
                divMensajes.Visible = true;
                lblMensaje.Text = "El usuario ha sido creado.";
            }

            pnlDatosUsuario.Visible = false;
            pnlBusqueda.Visible = true;
            CargarUsuarios();
        }
    }

    private bool ValidarUsuario()
    {
        if (txtNombreUsuario.Text.Trim().Equals(string.Empty))
        {
            divMensajes.Visible = true;
            lblMensaje.Text = "El nombre de usuario no puede quedar en blanco.";
            return false;
        }
        if (hdnIdUsuario.Value == String.Empty)
        {
            if (txtContraseña.Text.Trim().Equals(string.Empty))
            {
                divMensajes.Visible = true;
                lblMensaje.Text = "La contraseña no puede quedar en blanco.";
                return false;
            }
            if (txtConfirmarContraseña.Text.Trim().Equals(string.Empty))
            {
                divMensajes.Visible = true;
                lblMensaje.Text = "La contraseña no puede quedar en blanco.";
                return false;
            }
        }

        if (txtContraseña.Text != txtConfirmarContraseña.Text)
        {
            divMensajes.Visible = true;
            lblMensaje.Text = "Las contraseñas no coinciden.";
            return false;
        }

        return true;
    }

    protected void btnCancelar_OnClick(object sender, EventArgs e)
    {
        pnlDatosUsuario.Visible = false;
        pnlBusqueda.Visible = true;
    }

    protected void tblUsuarios_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[1].Style[HtmlTextWriterStyle.Display] = "none";
        e.Row.Cells[2].Style[HtmlTextWriterStyle.Display] = "none";

        if(e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[5].Text = (e.Row.Cells[5].Text != "False" ? "ACTIVO" : "INACTIVO");
        }
    }
}